在Ubuntu20.04中安装ROS Noetic

一、安装操作系统

  • 1、具体参考Ubuntu 20.04 LTS 桌面版详细安装指南进行操作系统安装,操作系统可以从开源镜像站下载

https://mirrors.huaweicloud.com 华为开源
https://mirrors.tuna.tsinghua.edu.cn 清华开源下载
https://mirrors.ustc.edu.cn 中国科学技术大学开源软件镜像

  • 2、安装支持ifconfig命令
sudo apt install net-tools
  • 3、安装支持SSH
sudo apt updatesudo apt install openssh-server
sudo systemctl status ssh

二、安装ROS Noetic

  • 1、安装源
    sudo sh -c '. /etc/lsb-release && echo "d{2d3b390d-f615-41d0-a830-7bbdcedbd397}eb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
    sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
  • 2、安装KEY
    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  • 3、更新源
    sudo apt update
  • 4、安装ROS
    sudo apt install ros-noetic-desktop-full    
  • 5、环境变量
    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc

三、安装测试

  • 1、启动
    roscore
  • 2、打开小乌龟
    rosrun turtlesim turtlesim_node
  • 3、键盘控制小乌龟
    rosrun turtlesim turtle_teleop_key
  • 4、命令控制小乌龟

输入rostopic pub /turtle2/cmd_vel 然后按tab键会自动联想参数;
geometry_msgs/Twist 为数据类型。linear为线速度,angular为角速度,单位是m/s 和 rad/s.
例如:”linear: x: 1.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 1.0” 小乌龟边向前,边自传,速度合成后,轨迹是一个圆。

    rostopic pub /turtle2/cmd_vel geometry_msgs/Twist "linear:
      x: 1.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 1.0"
  • 5、开发代码控制小乌龟
    1、具体参考关于ros提到的那只turtle
    2、创建名为toldturtle 的package,以及名为talk.cpp一个node
 mkdir -p ~/catkin_ws/src
 cd ~/catkin_ws/
 catkin_make
 cd ~/catkin_ws/src
 catkin_create_pkg toldturtle roscpp rospy std_msgs geometry_msgs
 cd toldturtle
 vi talk.cpp
 cd ~/catkin_ws/
 catkin_make
 . ~/catkin_ws/devel/setup.bash

3、修改CMakeLists.txt

target_link_libraries(talk
   ${catkin_LIBRARIES}
 )
 add_executable(talk src/talk.cpp)

4、执行

 rosrun toldturtle talk

5、talk.cpp参考

#include 
#include 

ros::Publisher cmdVelPub;

int main(int argc, char **argv){
  ros::init(argc, argv, "talk");            // rosrun toldturtle talk       //Usage: rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS]
  //"talk"必须是nodename
  std::string topic = "/turtle1/cmd_vel"; //topic name
  ros::NodeHandle n;
  cmdVelPub = n.advertise(topic, 1);
  //第一个参数也可以写成"/turtle1/cmd_vel"这样的topic name
  //第二个参数是发布的缓冲区大小,是消息类型
  ros::Rate loopRate(2);
  //与Rate::sleep();配合指定自循环频率
  ROS_INFO("talk cpp start...");//输出显示信息
  geometry_msgs::Twist speed; // 控制信号载体 Twist message

  while (ros::ok()){
    speed.linear.x = 1; // 设置线速度为1m/s,正为前进,负为后退
    speed.angular.z = 1; // 设置角速度为1rad/s,正为左转,负为右转
    cmdVelPub.publish(speed); // 将刚才设置的指令发送给机器人

    ros::spinOnce();
    loopRate.sleep();//按loopRate(2)设置的2HZ将程序挂起
  }

  return 0;
}

四、主题和服务开发

包括:主题、服务,涉及消息定义。具体参考如下资源:
ROS学习笔记五:创建和使用ROS msg和srv
ros学习之消息和服务
ROS 新手测试简单的Service和Client
ROS学习笔记(一):自己动手写一个ROS程序/一个简单的发布(Publisher)、订阅(Subscriber)程序

  • 1、启动
    roscore

五、安装rosbridge,支持java与ROS通信

  • 1、安装
   sudo apt-get install ros-noetic-rosbridge-server
  • 2、启动
    roscore
    roscd rosbridge_server
    roslaunch rosbridge_server rosbridge_websocket.launch
    #列出所有节点,可见增加了rosbridge_websocket
    rosnode list

成功运行后可见,默认9090端口:
Rosbridge WebSocket server started at ws://0.0.0.0:9090

  • 3、测试
    下载java_rosbridge,该工程只支持topic通信,需要自己扩展下service通信,然后运行工程的RosTest,另外消息结构也需要根据需要扩展,以及自己实现重连机制
#列出所有主题,可见主题增加了java_to_ros和ros_to_java
rostopic list
#输出主题消息
rostopic echo /java_to_ros
#发布主题消息
rostopic pub /ros_to_java std_msgs/String  "helloJAVA"
rostopic pub /java_to_ros std_msgs/String  "helloROS"
#列出所有服务,可代码调用默认的/rosapi/get_time
rosservice list
rosservice call /rosapi/get_time
  • 4、rosbridge协议
    底层为websocket通信,在这之上封装具体的数据格式,具体见:
    Rosbridge协议定义
    rosbridge_suite

六、常用命令

#进入ROS目录
roscd
#运营
roslaunch
rosrun
#节点
rosnode list
#主题
rostopic list
#服务
rosservice list
rosservice call /rosapi/get_time
#消息
rosmsg list
#查看消息定义
rosed geometry_msgs Twist.msg 
#消息的存储和重新发布
rosbag
#参数
rosparam list 

七、ROS优缺点

ROS系统的实时性是不够的
……

你可能感兴趣的:(在Ubuntu20.04中安装ROS Noetic)