ros 初学记录(1)安装与创建工作空间

    折腾半天ubuntu下的linux,重装多次,总算可以勉强代替windows,这才开始ros的学习。

    安装就出了大问题,由于对linux系统知识的匮乏,最开始自己分区到了/var文件,结果导致空间不足,为此重装多次,深以为教训,这里不提。

    安装的官方文档如下:ros官方

    中文版个人推荐:ros不能再详细对安装教程

    遇到对错误基本都再该博客上得以解决。

    提一下创建工作空间的问题。

    工作空间代码如下,linux基础薄弱,理解可能有误,望指正:

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace         #新建一个catkin_ws/src文件目录,定位到该目录,并初始化工作空间

$ cd ~/catkin_ws/
$ catkin_make         #定位到目录,安装catkin

$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH  #设置环境变量

$ cd ~/catkin_ws/src

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp  #定位到/src,并安装设置python和cpp语言对依赖package,即用python或者c++编程

$ cd ~/catkin_ws
$ catkin_make
$ . ~/catkin_ws/devel/setup.bash  #创建catkin工作空间,并安装bash

$cd ~/catkin_ws/src/beginner_tutorials/src
 
$gedit hello_world.cpp #定位到beginner,用gedit创建一个cpp文件


在cpp文件上写入一个最简单的helloworld程序:

#include     
        
    int main(int argc, char** argv)    
    {    
        ros::init(argc, argv, "hello_meta_package_node");    
        ros::NodeHandle nh;    
            
        ROS_INFO("Hello ROS!");    
            
        ros::spin();    
    }    

ros函数变量(c++)添加编辑到Cmakelist,txt文件最末尾。文件位置是在

/catkin_ws/src/beginner_tutorials/src

添加:

add_executable(hello_worldsrc/hello_world.cpp)

target_link_libraries(hello_world ${catkin_LIBRARIES} )


定位到:

$cd ~/catkin_ws  

$catkin_make

运行。

ctrl+alt+T调用出另一个终端,输入

$ roscore

回到原终端,运行,rosrun

$rosrun beginner_tutorials hello_world

运行结果是

[INFO] [1488885879.948466473]: Hello ROS!


该结果表示创建工作空间成功。


期间遇到错误如下:

1.添加Cmakelist.txtc++库对支持时,将代码添加到了文件开头,导致catkin_make时,遇见如下错误代码:

CMakeFiles/hello_world.dir/src/hello_world.cpp.o:在函数‘main’中:
hello_world.cpp:(.text+0x61):对‘ros::init(int&, char**, std::string const&, unsigned int)’未定义的引用
hello_world.cpp:(.text+0xbd):对‘ros::NodeHandle::NodeHandle(std::string const&, std::map, std::allocator > > const&)’未定义的引用
…………
…………
CMakeFiles/hello_world.dir/src/hello_world.cpp.o:在函数‘main’中:
hello_world.cpp:(.text+0x61):对‘ros::init(int&, char**, std::string const&, unsigned int)’未定义的引用
hello_world.cpp:(.text+0xbd):对‘ros::NodeHandle::NodeHandle(std::string const&, std::map, std::allocator > > const&)’未定义的引

2.

解决方法:Cmakelist.txt调整代码位置。

2.rosrun之后,遇见如下错误代码:

[ERROR] [1488885671.367081873]: [registerPublisher] Failed to contact master at [localhost:11311].  Retrying..

解决方法,因为ros对特有机制,必须roscore之后才能rosrun,因此只需要再另一个终端上输入rosrun即可。


改进:


运行cpp可以使用launchrosrun本身也只能运行一个cpp文件,而launch可以运行多个。


使用代码如下:

$ roscdbeginner_tutorials
$ mkdir launch
$ cd launch
$gedit hello_world.launch

hello_world.launch内容:



  
  
  


$roslaunchbeginner_tutorials hello_world.launch



为了看到信息,我们要打开rqt_console


$rqt_console

$roslaunchbeginner_tutorials hello_world.launch




你可能感兴趣的:(ros)