一、ROS动作编程
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
二、ROS安装
1.添加ROS软件源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
2.添加密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
3.安装
sudo apt update
sudo apt-get install ros-melodic-desktop-full
4.初始化rosdep
sudo rosdep init
rosdep update
ps:如果出现找不到命令提示的错误,输入
sudo apt install python-rosdep
可解决
也可使用本地安装的方法,参考:https://blog.csdn.net/qq_43279579/article/details/114291635
三.ROS第一个例程——小海龟
开启小海龟仿真的步骤:
1.启动ROS Master
roscore
2.启动小海龟仿真器
rosrun turtlesim turtlesim_node
3.启动海龟控制节点
rosrun turtlesim turtle_teleop_key
用C语言实现小乌龟画圆
先建立一个包
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
切到该路径中
cd learning_topic/src/
touch velocity_publisher.cpp
代码:
//代码
/**
* 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
*/
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
int main(int argc, char **argv)
{
// ROS节点初始化
ros::init(argc, argv, "velocity_publisher");
// 创建节点句柄
ros::NodeHandle n;
// 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10
ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
// 设置循环的频率
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
// 初始化geometry_msgs::Twist类型的消息
geometry_msgs::Twist vel_msg;
vel_msg.linear.x = 0.5;
vel_msg.angular.z = 0.2;
// 发布消息
turtle_vel_pub.publish(vel_msg);
ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]",
vel_msg.linear.x, vel_msg.angular.z);
// 按照循环频率延时
loop_rate.sleep();
}
return 0;
}
改写Cmakelist.txt,修改两个路径
包路径指定
catkin_package(
INCLUDE_DIRS include
LIBRARIES learning_topic
CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim
# DEPENDS system_lib
)
目标文件指定
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
测试
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher
参考链接:https://blog.csdn.net/qq_43279579/article/details/114291635
https://blog.csdn.net/qq_52378452/article/details/129391715