1.先是安装,在小鱼大佬的代码帮助下,ROS可以实现一键安装了:
ubuntu控制台键入
wget http://fishros.com/install -O fishros && . fishros
命令,再根据命令提示选择自己ubuntu对应的ROS版本,慢慢等它下载和执行就行了,例如本人是ubuntu18系统,所以需要选择ros-melodic.
在程序执行完后,键入roscore,以下内容表示成功安装
再新开一个控制台,输入
rosrun turtlesim turtlesim_node
这时可以看到海龟程序已经被打开了:
但还不能通过方向键控制海龟,再打开第三个控制台,输入
rosrun turtlesim turtle_teleop_key
并在这个控制台窗口内通过方向键控制海龟:
我们还需要检查riviz等高级功能是否能正常运行,新开控制台输入
rosrun rivz rivz
可以看到riviz正常显示
我们想获取当前ros运行的话题与其相关的信息,输入
rostopic list
结果如下:
输入rqt_graph
获取当节点图
在新的控制台输入
rostopic info /turtle1/cmd_vel
得到话题信息如下:
此时我们已经获取到话题名称: /turtle1/cmd_vel 类型:geometry_msgs/Twist
键入命令:rostopic pub -r 10 /turtle1/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}}’ ,此时小海龟开始做圆周运动
下面我们再尝试用程序控制小海龟,创建目录并进入:
mkdir -p turtle01/src
#新建一个目录文件夹src
cd turtle01/src
创建包名为 package_01 后面4个为依赖项
catkin_create_pkg package_01 roscpp rospy std_msgs geometry_msgs
退到上一级目录,执行catkin_make,生成build,devel 文件夹
在…/devel文件夹执行source setup.bash,将此ros工程加入到ros环境
执行catkin_create_pkg package_01 roscpp rospy std_msgs geometry_msgs创建package_01文件夹
新建pub_control_msg.cpp
并填入以下内容:
#include "ros/ros.h"
#include "geometry_msgs/Twist.h"
int main(int argc,char *argv[])
{
//pub msgs to control the turtle
//topic:/turtle1/cmd_vel
//type:geometry_msgs/Twist
//step:include the head file
//initialize ros node
//create handle of ros
//create pub
ros::init(argc,argv,"mycotrol"); //initialize node
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
ros::Rate rate(10);
geometry_msgs::Twist twist;
twist.linear.x = 1.0;
twist.linear.y = 0.0;
twist.linear.z = 0.0;
twist.angular.x = 0.0;
twist.angular.y = 0.0;
twist.angular.z = 0.5;
while(ros::ok())
{
pub.publish(twist);
rate.sleep();
ros::spinOnce();
}
return 0;
}
在package_01文件夹修改CmakeList.txt文件。
add_executable(pub_control_msg src/pub_control_msg.cpp)
target_link_libraries(pub_control_msg ${catkin_LIBRARIES} )
在上一级目录执行catkin_make
执行rosrun pakage_01 pub_control_msg