我正在使用虚拟引擎(凉亭),每当按下某个键时,我想向虚拟环境中的链接之一施加力。
我尝试将Morgan McGuire代码(http://www.flipcode.com/archives/_kbhit_for_Linux.shtml)用于Linux中的“ kbhit”功能实现,并且还尝试实现用户“ Matthieu M”发布的代码。如另一个问题Cin without waiting for input?所示。 kbhit函数对于链接中示例的代码正常工作,但是当您尝试在if子句中使用该函数进行一些“非暂停读取”时,无论单击后该函数的返回值都保持不变一把钥匙。第二个示例也没有很好的结果(可能是由于我的编译方法)。
//This is what I want to do inside the ApplyForce.cc file
public: void OnUpdate()//This method is called whenever this plugin is updated in the virtual environment
{
if (FrontArrowIsPressed())
{
this->model->GetLink("blue_object")->AddForce(gazebo::math::Vector3(0,20, 0)); //Apply force
}
}
//This is how I compile my code. Just in case, this might be unnecessary information.
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
find_package(gazebo REQUIRED)
include_directories(${GAZEBO_INCLUDE_DIRS})
link_directories(${GAZEBO_LIBRARY_DIRS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GAZEBO_CXX_FLAGS}")
add_library(ApplyForce SHARED ApplyForce.cc)
target_link_libraries(ApplyForce ${GAZEBO_LIBRARIES})
我实际上不是在循环工作,但是由于这是一个虚拟环境,所以每当我想从键盘读取数据时都无法停止程序,因此我正在进行实时实验。我想在模拟运行时使用键盘作为控制器。
最后一件事:我想不惜一切代价避免ROS,因为它只会增加三千层的复杂性,而对于像我这样的简单应用程序,它仅代表学习基础知识所花费的不必要的时间。
我希望您能为此提供帮助,非常感谢!