fixbug
This commit is contained in:
@@ -579,8 +579,11 @@ namespace NavigationExample
|
|||||||
NavigationAPI.Twist2DStamped twist = new NavigationAPI.Twist2DStamped();
|
NavigationAPI.Twist2DStamped twist = new NavigationAPI.Twist2DStamped();
|
||||||
if (NavigationAPI.navigation_get_twist(navHandle, ref twist))
|
if (NavigationAPI.navigation_get_twist(navHandle, ref twist))
|
||||||
{
|
{
|
||||||
Console.WriteLine("Twist: {0}, {1}, {2}, {3}", NavigationAPI.MarshalString(twist.header.frame_id), twist.velocity.x, twist.velocity.y, twist.velocity.theta);
|
Console.WriteLine(
|
||||||
} // Cleanup
|
"Twist: {0}, {1}, {2}, {3}",
|
||||||
|
NavigationAPI.MarshalString(twist.header.frame_id), twist.velocity.x, twist.velocity.y, twist.velocity.theta);
|
||||||
|
}
|
||||||
|
// Cleanup
|
||||||
NavigationAPI.navigation_destroy(navHandle);
|
NavigationAPI.navigation_destroy(navHandle);
|
||||||
NavigationAPI.tf_listener_destroy(tfHandle);
|
NavigationAPI.tf_listener_destroy(tfHandle);
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -286,8 +286,10 @@ extern "C" bool navigation_move_to(NavigationHandle handle, const PoseStamped go
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
||||||
return nav->moveTo(cpp_goal, xy_goal_tolerance, yaw_goal_tolerance);
|
return nav->moveTo(cpp_goal, xy_goal_tolerance, yaw_goal_tolerance);
|
||||||
}
|
}
|
||||||
@@ -324,8 +326,10 @@ extern "C" bool navigation_dock_to(NavigationHandle handle, const char *marker,
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
||||||
return nav->dockTo(std::string(marker), cpp_goal, xy_goal_tolerance, yaw_goal_tolerance);
|
return nav->dockTo(std::string(marker), cpp_goal, xy_goal_tolerance, yaw_goal_tolerance);
|
||||||
}
|
}
|
||||||
@@ -360,8 +364,10 @@ extern "C" bool navigation_move_straight_to(NavigationHandle handle, const PoseS
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
||||||
return nav->moveStraightTo(cpp_goal, xy_goal_tolerance);
|
return nav->moveStraightTo(cpp_goal, xy_goal_tolerance);
|
||||||
}
|
}
|
||||||
@@ -380,8 +386,10 @@ extern "C" bool navigation_rotate_to(NavigationHandle handle, const PoseStamped
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal);
|
||||||
return nav->rotateTo(cpp_goal, yaw_goal_tolerance);
|
return nav->rotateTo(cpp_goal, yaw_goal_tolerance);
|
||||||
}
|
}
|
||||||
@@ -397,9 +405,9 @@ extern "C" void navigation_pause(NavigationHandle handle)
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (nav_ptr && *nav_ptr)
|
||||||
nav->pause();
|
nav_ptr->get()->pause();
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -414,9 +422,9 @@ extern "C" void navigation_resume(NavigationHandle handle)
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (nav_ptr && *nav_ptr)
|
||||||
nav->resume();
|
nav_ptr->get()->resume();
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -431,9 +439,9 @@ extern "C" void navigation_cancel(NavigationHandle handle)
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (nav_ptr && *nav_ptr)
|
||||||
nav->cancel();
|
nav_ptr->get()->cancel();
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -452,8 +460,10 @@ extern "C" bool navigation_set_twist_linear(NavigationHandle handle,
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::Vector3 linear;
|
robot_geometry_msgs::Vector3 linear;
|
||||||
linear.x = linear_x;
|
linear.x = linear_x;
|
||||||
linear.y = linear_y;
|
linear.y = linear_y;
|
||||||
@@ -476,8 +486,10 @@ extern "C" bool navigation_set_twist_angular(NavigationHandle handle,
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::Vector3 angular;
|
robot_geometry_msgs::Vector3 angular;
|
||||||
angular.x = angular_x;
|
angular.x = angular_x;
|
||||||
angular.y = angular_y;
|
angular.y = angular_y;
|
||||||
@@ -499,8 +511,10 @@ extern "C" bool navigation_get_robot_pose_stamped(NavigationHandle handle, PoseS
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::PoseStamped cpp_pose;
|
robot_geometry_msgs::PoseStamped cpp_pose;
|
||||||
if (nav->getRobotPose(cpp_pose))
|
if (nav->getRobotPose(cpp_pose))
|
||||||
{
|
{
|
||||||
@@ -524,8 +538,10 @@ extern "C" bool navigation_get_robot_pose_2d(NavigationHandle handle, Pose2D &ou
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
robot::move_base_core::BaseNavigation *nav =
|
auto *nav_ptr = static_cast<std::shared_ptr<robot::move_base_core::BaseNavigation> *>(handle.ptr);
|
||||||
static_cast<robot::move_base_core::BaseNavigation *>(handle.ptr);
|
if (!nav_ptr || !*nav_ptr)
|
||||||
|
return false;
|
||||||
|
auto *nav = nav_ptr->get();
|
||||||
robot_geometry_msgs::Pose2D cpp_pose;
|
robot_geometry_msgs::Pose2D cpp_pose;
|
||||||
if (nav->getRobotPose(cpp_pose))
|
if (nav->getRobotPose(cpp_pose))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user