实验平台 ubuntu18.04
ubuntu18.04支持的ROS2版本是eloquent
之前我们部署了ros1 现在我们在ros1的基础上部署ros2并实现可以自由切换。
sudo apt updatensudo apt install curl gnupg2 lsb-releasencurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
如果出错:
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt updatensudo apt install ros-eloquent-desktop
echo "source /opt/ros/eloquent/setup.bash" >> ~/.bashrcnn
sudo apt-get install ros-eloquent-ros2bag nsudo apt-get install ros-eloquent-rosbag2-converter-default-pluginsnsudo apt-get install ros-eloquent-rosbag2-storage-default-plugins
sudo apt install python3-argcomplete
我的署兼python 代码的环境都是使用miniconda构建的 ,具体的署兼构建,我会再写一个文档加以补充。署兼
如图所示
输入1 进入ROS1 输入2进入ROS2
实现方法 修改~/.bashrc
当然我这里也指定了进入了miniconda 的环境
脚本是顺序进行的 ,这个指令尽量放入到最下面 。署兼
脚本如下:
echo "ros melodic(1) or ros2 eloquent(2)?署兼"nread editionnif [ "$edition" -eq "1" ];thenn conda activate fusionn source /opt/ros/melodic/setup.bashn source /home/xia/catkin_workspace/install/setup.bash --extendn echo "ros1 is done"nelsen #DDS ROS2 relatedn conda activate ros2_envn source /opt/ros/eloquent/setup.bashn source /home/xia/HYworkspace/athena/install/setup.bashn echo "ros2 is done"nfi
有需要的修改的,可以自定义修改,署兼主要的署兼逻辑就是在自启动里添加选择。
# 初始化rclpynrclpy.init(args=None) n# 创建话题nnode.create_publisher(String,"talker_topic",10)n# 构建节点nnode = Node('*')n# 订阅消息nnode.create_subscription(ParkingInfoList,subscriber_topic_name['call_back_parking'], call_back_parking,10)n# 运行节点nrclpy.spin(node) n# 关闭rclpy nrclpy.shutdown()
ros1 python 对比ros2 python
ROS1
ROS2
初始化
无
rclpy.init(args=None)
创建话题
rospy.Subscriber()
node.create_publisher()
构建节点
rospy.init_node()
node = Node('*')
订阅消息
rospy.Subscriber()
node.create_subscription()
运行节点
rospy.spin()
rclpy.spin(node)
后面我们继续进行ROS2数据的发出与接收,敬请期待。署兼
署兼(作者:汽车音响)