ROS学习

目录

Ubuntu20.04上安装:

命令行使用

工作空间和功能包

话题模型


Ubuntu20.04上安装:

cn/noetic/Installation/Ubuntu - ROS Wiki

学习资料:

【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

《ROS入门21讲》教程补充资料|学习ROS出现问题?点这里解开你的疑惑~ - 哔哩哔哩

cn/ROS/Tutorials - ROS Wiki

命令行使用

roscore            //启动ROS Master
rosrun turtlesim turtlesim_node        //启动小海龟仿真器
rosrun turtlesim turtle_teleop_key     //启动海龟控制节点

rqt_graph       //
rosnode list    //
rosnode info /turtlesim    //

rostopic    
rostopic list    //查看话题列表
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:     //发布话题消息
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0" 
rostopic pu-r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0"

rosmsg show geometry_msgs/Twist


rosservice list
rosservice call /spawn "x: 2.0        //发布服务请求
y: 2.0
theta: 0.0
name: 'turtle2'"

rosbag record -a -O cmd_record     //话题记录
resbag play cmd_record.bag    //话题复现

工作空间和功能包

工作空间(workspace):一个存放工程开发相关的文件夹

  • src:代码空间(Source Space)
  • build:编译空间(Build Space)
  • devel:开发空间(Development Space)
  • install:安装空间(Install Space)

//创建工作空间
mkdir -p ~/catkin_ws/src    
cd ~/catkin_ws/src
catkin_init_workspace

//编译工作空间
cd ~/catkin_ws/    
catkin_make 
       
source devel/setup.bash    //设置环境变量
echo $ROS_PACKAGE_PATH    //检查环境变量

catkin_create_pkg <package_name>[depend1] [depend2] [depend3]

//创建功能包
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp

//编译功能包
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

话题模型

//创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

 如何实现一个发布者

  1. 初始化ROS节点;
  2. 向ROS Master注册节点信息,
  3. 包括发布的话题名和话题中的消息类型;
  4. 创建消息数据;
  5. 按照—定频率循环发布消息。

复制文件到src

/***********************************************************************
Copyright 2020 GuYueHome (www.guyuehome.com).
***********************************************************************/

/**
 * 该例程将发布/person_info话题,自定义消息类型learning_topic::Person
 */
 
#include <ros/ros.h>
#include "learning_topic/Person.h"

int main(int argc, char **argv)
{
    // ROS节点初始化
    ros::init(argc, argv, "person_publisher");

    // 创建节点句柄
    ros::NodeHandle n;

    // 创建一个Publisher,发布名为/person_info的topic,消息类型为learning_topic::Person,队列长度10
    ros::Publisher person_info_pub = n.advertise<learning_topic::Person>("/person_info", 10);

    // 设置循环的频率
    ros::Rate loop_rate(1);

    int count = 0;
    while (ros::ok())
    {
        // 初始化learning_topic::Person类型的消息
    	learning_topic::Person person_msg;
		person_msg.name = "Tom";
		person_msg.age  = 18;
		person_msg.sex  = learning_topic::Person::male;

        // 发布消息
		person_info_pub.publish(person_msg);

       	ROS_INFO("Publish Person Info: name:%s  age:%d  sex:%d", 
				  person_msg.name.c_str(), person_msg.age, person_msg.sex);

        // 按照循环频率延时
        loop_rate.sleep();
    }

    return 0;
}

加入以下指令到CMakeLists.txt 

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

终端下: 

echo "source /home/joyer/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
//编译并运行发布者
cd ~/catkin_ws
catkin_make

roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值