目錄
一、安裝ROS
1、ROS簡(jiǎn)介
2、安裝ROS
?二、ROS初步使用
1、小海龜
?2、控制小海龜走圓形
(1)、創(chuàng)建工作空間
?(2)、編譯工作空間
?(3)、配置環(huán)境變量
?(4)、畫(huà)圓程序的編寫(xiě)
?(5)、控制小海龜走圓形
?三、總結(jié)
?
一、安裝ROS
1、ROS簡(jiǎn)介
機(jī)器人操作系統(tǒng)(Robot Operating System, ROS)是一個(gè)應(yīng)用于機(jī)器人上的操作系統(tǒng),它操作方便、功能強(qiáng)大,特別適用于機(jī)器人這種多節(jié)點(diǎn)多任務(wù)的復(fù)雜場(chǎng)景。
2、安裝ROS
添加ROS軟件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
添加密鑰(用于軟件安裝,如果之前已經(jīng)完成密鑰添加可忽略)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
?安裝ROS
sudo apt update
sudo apt-get install ros-melodic-desktop-full
安裝 rosdep
sudo apt install python-rosdep
初始化rosdep
sudo rosdep init
rosdep update
?設(shè)置環(huán)境變量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安裝rosinstall
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
?二、ROS初步使用
1、小海龜
啟動(dòng)ROS Master
roscore
啟動(dòng)小海龜仿真器(啟動(dòng)ROS Master后重新打開(kāi)一個(gè)終端再輸入)
rosrun turtlesim turtlesim_node
啟動(dòng)海龜控制節(jié)點(diǎn) (啟動(dòng)小海龜仿真器后重新打開(kāi)一個(gè)終端再輸入)
rosrun turtlesim turtle_teleop_key
將鼠標(biāo)指針?lè)旁谠摯翱诩纯衫面I盤(pán)的上下左右控制小海龜移動(dòng)
?2、控制小海龜走圓形
(1)、創(chuàng)建工作空間
mkdir -p ~/test/src
cd ~/test/src
catkin_init_workspace
?(2)、編譯工作空間
cd ~/test
catkin_make
?(3)、配置環(huán)境變量
在test路徑下終端輸入source devel/setup.bash
,使系統(tǒng)知道功能包放置在test這個(gè)工作空間下。
查看當(dāng)前環(huán)境變量,終端輸入echo $ROS_PACKAGE_PATH
$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH
?
?(4)、畫(huà)圓程序的編寫(xiě)
在test/src路徑下新建my_turtle_package包
$ cd test/src #進(jìn)入工作空間
$ catkin_create_pkg my_turtle_package rospy roscpp #新建my_turtle_package包
在my_turtle_package/src 中創(chuàng)建cpp文件
$ cd my_turtle_package/src/
$ touch draw_circle.cpp
?編寫(xiě)畫(huà)圓代碼
gedit draw_circle.cpp
添加代碼
#include "ros/ros.h"
#include<geometry_msgs/Twist.h> //運(yùn)動(dòng)速度結(jié)構(gòu)體類(lèi)型 geometry_msgs::Twist的定義文件
int main(int argc, char *argv[])
{
ros::init(argc, argv, "vel_ctrl"); //對(duì)該節(jié)點(diǎn)進(jìn)行初始化操作
ros::NodeHandle n; //申明一個(gè)NodeHandle對(duì)象n,并用n生成一個(gè)廣播對(duì)象vel_pub
ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
//vel_pub會(huì)在主題"/cmd_vel"(機(jī)器人速度控制主題)里廣播geometry_msgs::Twist類(lèi)型的數(shù)據(jù)
ROS_INFO("draw_circle start...");//輸出顯示信息
while(ros::ok())
{
geometry_msgs::Twist vel_cmd; //聲明一個(gè)geometry_msgs::Twist 類(lèi)型的對(duì)象vel_cmd,并將速度的值賦值到這個(gè)對(duì)象里面
vel_cmd.linear.x = 2.0;//前后(+-) m/s
vel_cmd.linear.y = 0.0; //左右(+-) m/s
vel_cmd.linear.z = 0.0;
vel_cmd.angular.x = 0;
vel_cmd.angular.y = 0;
vel_cmd.angular.z = 1.8; //機(jī)器人的自轉(zhuǎn)速度,+左轉(zhuǎn),-右轉(zhuǎn),單位是rad/s
vel_pub.publish(vel_cmd); //賦值完畢后,發(fā)送到主題"/cmd_vel"。機(jī)器人的核心節(jié)點(diǎn)會(huì)從這個(gè)主題接受發(fā)送過(guò)去的速度值,并轉(zhuǎn)發(fā)到硬件體上去執(zhí)行
ros::spinOnce();//調(diào)用此函數(shù)給其他回調(diào)函數(shù)得以執(zhí)行(比例程未使用回調(diào)函數(shù))
}
return 0;
}
打開(kāi)CMakeLists.txt
$ cd ~/test/src/my_turtle_package
$ gedit CMakeLists.txt
在Declare a C++ executable前添加
add_executable(draw_circle src/draw_circle.cpp)
target_link_libraries(draw_circle ${catkin_LIBRARIES})
?編譯
$ cd ~/test/
$ catkin_make
?(5)、控制小海龜走圓形
啟動(dòng)ROS
roscore
?啟動(dòng)小海龜仿真器
rosrun turtlesim turtlesim_node
小海龜畫(huà)圓
$ cd ~/test/
$ source devel/setup.bash
$ rosrun my_turtle_package draw_circle
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-622790.html
?三、總結(jié)
本次實(shí)驗(yàn)主要是對(duì)ROS環(huán)境配置和對(duì)ROS的初步使用,在環(huán)境配置中非常順利,沒(méi)有遇到較大問(wèn)題,通過(guò)本次實(shí)驗(yàn)對(duì)ROS有了初步實(shí)踐了解。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-622790.html
到了這里,關(guān)于Ubuntu18.04安裝ROS的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!