上一节配置的v-rep在ros kinetic中是可以看图像,并订阅主题的,但是无法发送消息让机器人动起来,
在Top启发下,研究了一下,终于解决了,官方提供的正对3.3.1版本的vrep需要额外的步骤。
ln -s compiledRosPlugins/libv_repExtRos.so
配置后在kinetic中是会报错的,这时候需要重新编译生成该文件。
这里,需要注意catkin_make和catkin build的区别,并灵活使用。
复制在v-rep安装目录ros_packages到catkin_relay/src中:
/home/relaybot/Rob_Soft/V-REP_PRO_EDU_V3_3_1_64_Linux/programming/externalIkDemo1/ros_packages
需要修改,其中CMakeLists.txt,加入:
link_directories("/opt/ros/kinetic/lib")
使其可以用于kinetic,需要修改多处。然后编译,这里推荐用catkin build:
~$ cd catkin_relay/
~/catkin_relay$ catkin build
完成后,就可以在devel/lib下看到新的.so。
~/Rob_Soft/V-REP_PRO_EDU_V3_3_1_64_Linux$ ln /home/relaybot/catkin_relay/devel/lib/libv_repExtRosBridge.so
~/Rob_Soft/V-REP_PRO_EDU_V3_3_1_64_Linux$ ln /home/relaybot/catkin_relay/devel/lib/libv_repExtRos.so
这时,启动./vrep.sh,就不会出错了。
分别启动roscore和v-rep。
打开Pioneer_p3dx_traj_DEMO.ttt场景并运行。
新打开一个终端,运行:
~$ roslaunch demo_pioneer demo-visual-servo-pioneer-simulation.launch
图像被标记出。这里需要用到visp,demo_pioneer等。
~$ rosrun rqt_publisher rqt_publisher
Matlab2015b之后版本可以直接使用ROS,测试过indigo和kinetic都没有问题。也可以用matlab直接和vrep调试。
最后补一组图,ros和vrep控制空中机器人也很方便的。
-End-
补充 API接口
The remote API is part of the V-REP API framework.
V-REP offers a remote API allowing to control a simulation (or the simulator itself) from an external application or a remote hardware (e.g. real robot, remote computer, etc.). The V-REP remote API is composed by approximately one hundred specific functions and one generic function, that can be called from a C/C++ application, a Python script, a Java application, a Matlab/Octave program, an Urbi script, or a Lua script. The remote API functions are interacting with V-REP via socket communication in a way that reduces lag and network load to a great extent. All this happens in a hidden fashion to the user. The remote API can let one or several external applications interact with V-REP in a synchronous* or asynchronous* way (asynchronous by default), and even remote control of the simulator is supported (e.g. remotely loading a scene, starting, pausing or stopping a simulation for instance).
The word Synchronous is used in the sense that each simulation pass runs synchronously with the remote API application (i.e. the simulator will wait for a trigger signal from a client to start next simulation pass at a time t+dt). This is different from synchronous/asynchronous in the sense of blocking/non-blocking operation. The remote API also supports blocking and non-blocking operations.
Make sure you understand how the remote API is operating by reading this section. Also have a look at the external controller tutorial.
The remote API functionality comes in 2 separate entities, that are interacting via socket communication:
the client side (i.e. your application): the remote API on the client side is available for many different programming languages. Currently following languages are supported: C/C++, Python, Java, Matlab, Octave, Urbi and Lua. Bindings for other languages can easily be created by yourself. Instructions on how to enable the remote API on the client side are given here.the server side (i.e. V-REP): the remote API on the server side is implemented via a V-REP plugin that should be loaded by V-REP by default: v_repExtRemoteApi.dll, libv_repExtRemoteApi.dylib or libv_repExtRemoteApi.so. The plugin project files are located in V-REP's installation directory, in the "programming" folder. Instructions on how to enabled the remote API on the server side are given here.Recommended topicsEnabling the Remote API - client sideEnabling the Remote API - server sideRemote API modus operandiAlphabetical remote API function listRemote API function list by categoryRemote API constants |
---|