1、launch

1、对于需要从命令行传入参数的命令,比如人rosrun ying talker 192.168.1.1这种,可以在launch中使用args标签传入
2、当我们需要打开多个终端的时候,可以在不同的node中加入

output = "screen" launch-prefix="xterm -e"

这两个标签。(注意一定是xterm,其他的试了以后不行。)在我的实验中,有一个订阅机器人关节角以及力传感器信息的节点,通过这种方式打开终端以后,一直输出0。。。。留坑以后填。
3、当然对于以上这种方式,有个小技巧就是,可以设置respawn=“true”,从而在修改代码后可以自动输出改动以后的代码,当然c++程序来说,需要先catkin_make一下。

2、msg

1、float需要使用float64
2、自定义消息可以自己建立一个放msg的功能包,或者直接在项目功能包的msg文件夹下新建。配置cmskelist自动生成.h文件在devel/include文件夹下。如果新建msg的功能包的话,需要将.h移动到msg功能包的include下。
3、

3、ros

1、关节角度文件中有空格会提示moveit规划错误。
2、当需要显示rviz时,如果机械臂没有连接上,那么因为没有开机,所以rviz中显示也不全。

3、如果有读取文件的操作,注意c/python都要在目录下运行(莫非上个坑与这个有关?不应该啊,在运行launch的时候已经cd到文件目录下了啊)。
4、py类型的可执行文件需要首先给权限。
5、ros下载的软件包第一次有可能需要catkin_init_workspace
6、

4、g++

1、编译时有可能需要连接几个不同的库,使用-I;有的库可能在几个不同的地方,比如/usr/local/include/。。。;当gcc 有.h文件时可以指定当前目录编译
2、

5、python

1、mat可以区间赋值,array不可以。
2、numpy如果接受的是float,定义时一定要dtype=float。
3、对于空list,可以用append.

6、c++


1、类内的变量可以引用外部的,只要把外部变量放在最前面(main置前),作为全局变量。
2、c++读取文件时时需要先定义指针,详见程序listener.cpp