Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/sm dancebot ue #512

Merged
merged 83 commits into from
Aug 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
d4d4f3d
Merge branch 'humble' of https://github.com/robosoft-ai/SMACC2 into h…
pabloinigoblasco Jun 9, 2023
53bd589
fix navigation humble
pabloinigoblasco Jun 9, 2023
797f3c9
more fixes
pabloinigoblasco Jun 10, 2023
44b432a
tests
pabloinigoblasco Jun 10, 2023
5107a16
changes
pabloinigoblasco Jun 10, 2023
c119822
missing
pabloinigoblasco Jun 10, 2023
9a88bdb
progress in navigation ue
pabloinigoblasco Jun 15, 2023
fa22299
docker improvements for rta
pabloinigoblasco Jun 16, 2023
e4456cd
ovpn config
pabloinigoblasco Jun 16, 2023
701f85e
instructions
pabloinigoblasco Jun 16, 2023
1c12af9
formatting
pabloinigoblasco Jun 16, 2023
0357790
Got wget command to work
Jun 17, 2023
7fe18cb
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jun 20, 2023
ca039f2
minor
pabloinigoblasco Jun 20, 2023
4a13bc9
more changes on docker
pabloinigoblasco Jun 23, 2023
5484a70
Updated readme
Jun 23, 2023
c3aa775
More readme updates
Jun 23, 2023
9b23011
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jun 28, 2023
b6b48f3
second pass on docker ue, nvidia drivers and readme.md
pabloinigoblasco Jun 28, 2023
d76fe8b
minor changes
pabloinigoblasco Jun 28, 2023
bbb0799
minor changes
pabloinigoblasco Jun 28, 2023
bc54e64
minor
pabloinigoblasco Jun 28, 2023
f101b4e
minor
pabloinigoblasco Jun 28, 2023
73de18e
changes
pabloinigoblasco Jun 28, 2023
0946d16
progress
pabloinigoblasco Jun 28, 2023
06b46f6
Update README.md
pabloinigoblasco Jun 28, 2023
83ceaf7
Update README.md
pabloinigoblasco Jun 28, 2023
c9abc9e
Update README.md
pabloinigoblasco Jun 28, 2023
088407d
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jun 30, 2023
185e822
updates in navigation
pabloinigoblasco Jun 30, 2023
a80731d
Bretts runtime instructions added to readme
Jun 30, 2023
e94cf86
minor change
Jun 30, 2023
3a5ac4b
Heading sizes in readme
Jun 30, 2023
faea4b3
improvements in navigation
pabloinigoblasco Jun 30, 2023
17a7138
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jun 30, 2023
3227b5a
fixing build
pabloinigoblasco Jul 1, 2023
a4fcc4b
Merge branch 'humble' into feature/sm_dancebot_ue
pabloinigoblasco Jul 1, 2023
22dce8a
fixing format
pabloinigoblasco Jul 1, 2023
67e3df6
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jul 1, 2023
1eeb044
fixing branch
pabloinigoblasco Jul 1, 2023
4a4140e
progress
pabloinigoblasco Jul 1, 2023
e5869f4
repos
pabloinigoblasco Jul 1, 2023
e91ba60
Dockerfile referencing our work
pabloinigoblasco Jul 1, 2023
80422b6
progress on docker image for ue
pabloinigoblasco Jul 6, 2023
2535dac
missing
pabloinigoblasco Jul 6, 2023
bbd035d
Merge branch 'humble' of https://github.com/robosoft-ai/SMACC2 into h…
pabloinigoblasco Jul 6, 2023
6e054d1
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Jul 6, 2023
a55802d
changes in the code
pabloinigoblasco Jul 6, 2023
0bdbdc4
missing stuff
pabloinigoblasco Jul 6, 2023
3c0b0b2
dockerfile and launching
pabloinigoblasco Jul 10, 2023
bfc2e63
finishing environment
pabloinigoblasco Jul 10, 2023
d83b2d2
fix save script
pabloinigoblasco Jul 10, 2023
696e7d1
fixing format
pabloinigoblasco Jul 10, 2023
c3049c0
missing
pabloinigoblasco Jul 10, 2023
cfb0a9d
missing
pabloinigoblasco Jul 10, 2023
bf52233
rough terrain navigation and behaviors and ice winter demo
pabloinigoblasco Jul 27, 2023
525da3f
turn over state machine
pabloinigoblasco Aug 4, 2023
0f58984
art gallery
pabloinigoblasco Aug 9, 2023
9e6e88f
minor
pabloinigoblasco Aug 10, 2023
4c5ae0e
push
pabloinigoblasco Aug 10, 2023
62d744e
waypoints fix
pabloinigoblasco Aug 11, 2023
0f448aa
more changes
pabloinigoblasco Aug 11, 2023
a5a123f
minor
pabloinigoblasco Aug 11, 2023
1a31345
minor
pabloinigoblasco Aug 11, 2023
5e4fe0b
minor
pabloinigoblasco Aug 11, 2023
797e68c
navigation parameters
pabloinigoblasco Aug 11, 2023
7caab75
Añadidos waypoints y cambiado el nombre del nodo en el json de depura…
Aug 11, 2023
71f03b2
Merge branch 'feature/waypoints_arreglos' into 'feature/sm_dancebot_ue'
Aug 11, 2023
cfc6b7e
progress state machine
pabloinigoblasco Aug 14, 2023
a94e9e7
ue_projec_2 refactoring
pabloinigoblasco Aug 14, 2023
e733014
tunning navigation
pabloinigoblasco Aug 14, 2023
d24b60b
missing
pabloinigoblasco Aug 16, 2023
25fb00c
art gallery
pabloinigoblasco Aug 16, 2023
c355b55
Update README.md
brettpac Aug 17, 2023
109440d
Update README.md
brettpac Aug 17, 2023
7567f4d
fixes
pabloinigoblasco Aug 18, 2023
1334039
merge
pabloinigoblasco Aug 18, 2023
76e5ad1
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Aug 18, 2023
49e7b2a
missing code
pabloinigoblasco Aug 18, 2023
d8cb6e9
refactoring files
pabloinigoblasco Aug 18, 2023
647d618
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Aug 18, 2023
4223f2c
Merge branch 'feature/sm_dancebot_ue' of https://github.com/robosoft-…
pabloinigoblasco Aug 18, 2023
329dbdc
updating docker
pabloinigoblasco Aug 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,21 @@ class CpTopicSubscriber : public smacc2::ISmaccComponent

virtual ~CpTopicSubscriber() {}

smacc2::SmaccSignal<void(const MessageType &)> onFirstMessageReceived_;
smacc2::SmaccSignal<void(const MessageType &)> onMessageReceived_;

std::function<void(const MessageType &)> postMessageEvent;
std::function<void(const MessageType &)> postInitialMessageEvent;

smacc2::SmaccSignal<void(const MessageType &)> onFirstMessageReceived_;
smacc2::SmaccSignal<void(const MessageType &)> onMessageReceived_;

// signal subscription method. This signal will be triggered when the first message is received
template <typename T>
boost::signals2::connection onMessageReceived(
void (T::*callback)(const MessageType &), T * object)
{
return this->getStateMachine()->createSignalConnection(onMessageReceived_, callback, object);
}

// signal subscription method. This signal will be triggered when the first message is received
template <typename T>
boost::signals2::connection onFirstMessageReceived(
void (T::*callback)(const MessageType &), T * object)
Expand Down
2 changes: 1 addition & 1 deletion smacc2/include/smacc2/impl/smacc_state_machine_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ template <typename EventType>
void ISmaccStateMachine::postEvent(EventLifeTime evlifetime)
{
auto evname = smacc2::introspection::demangleSymbol<EventType>();
RCLCPP_DEBUG_STREAM(getLogger(), "Event " << evname);
RCLCPP_INFO_STREAM(getLogger(), "Event " << evname);
auto * ev = new EventType();
this->postEvent(ev, evlifetime);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ find_package(tf2_geometry_msgs REQUIRED)
find_package(pluginlib REQUIRED)
find_package(bond REQUIRED)
find_package(slam_toolbox REQUIRED)
find_package(ament_index_cpp REQUIRED)

set(dependencies
smacc2
Expand All @@ -37,6 +38,7 @@ set(dependencies
tf2_geometry_msgs
bond
slam_toolbox
ament_index_cpp
)

include_directories(include)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,14 @@
#include <smacc2/smacc.hpp>

#include <geometry_msgs/msg/pose.hpp>
#include <nav2z_client/components/waypoints_navigator/cp_waypoints_navigator_base.hpp>

namespace cl_nav2z
{
class ClNav2Z;

struct Pose2D
struct EvWaypointFinal : sc::event<EvWaypointFinal>
{
Pose2D(double x, double y, double yaw)
{
this->x_ = x;
this->y_ = y;
this->yaw_ = yaw;
}

double x_;
double y_;
double yaw_;
};

struct NavigateNextWaypointOptions
Expand All @@ -52,11 +43,9 @@ struct NavigateNextWaypointOptions
// This component contains a list of waypoints. These waypoints can
// be iterated in the different states using CbNextWaiPoint
// waypoint index is only incremented if the current waypoint is successfully reached
class CpWaypointNavigator : public smacc2::ISmaccComponent
class CpWaypointNavigator : public CpWaypointNavigatorBase
{
public:
WaypointEventDispatcher waypointsEventDispatcher;

ClNav2Z * client_;

CpWaypointNavigator();
Expand All @@ -69,14 +58,6 @@ class CpWaypointNavigator : public smacc2::ISmaccComponent
waypointsEventDispatcher.initialize<TSourceObject, TOrthogonal>(client_);
}

void loadWayPointsFromFile(std::string filepath);

void loadWayPointsFromFile2(std::string filepath);

void setWaypoints(const std::vector<geometry_msgs::msg::Pose> & waypoints);

void setWaypoints(const std::vector<Pose2D> & waypoints);

std::optional<std::shared_future<
std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > > >
sendNextGoal(
Expand All @@ -86,39 +67,17 @@ class CpWaypointNavigator : public smacc2::ISmaccComponent

void stopWaitingResult();

const std::vector<geometry_msgs::msg::Pose> & getWaypoints() const;
const std::vector<std::string> & getWaypointNames() const;
std::optional<geometry_msgs::msg::Pose> getNamedPose(std::string name) const;

long getCurrentWaypointIndex() const;
std::optional<std::string> getCurrentWaypointName() const;

long currentWaypoint_;

void rewind(int count);

void forward(int count);
void seekName(std::string name);

smacc2::SmaccSignal<void()> onNavigationRequestSucceded;
smacc2::SmaccSignal<void()> onNavigationRequestAborted;
smacc2::SmaccSignal<void()> onNavigationRequestCancelled;

private:
void insertWaypoint(int index, geometry_msgs::msg::Pose & newpose);

void removeWaypoint(int index);

void onNavigationResult(const ClNav2Z::WrappedResult & r);

void onGoalReached(const ClNav2Z::WrappedResult & res);
void onGoalCancelled(const ClNav2Z::WrappedResult & /*res*/);
void onGoalAborted(const ClNav2Z::WrappedResult & /*res*/);

std::vector<geometry_msgs::msg::Pose> waypoints_;

std::vector<std::string> waypointsNames_;

boost::signals2::connection succeddedNav2ZClientConnection_;
boost::signals2::connection abortedNav2ZClientConnection_;
boost::signals2::connection cancelledNav2ZClientConnection_;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
// Copyright 2021 RobosoftAI Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*****************************************************************************************************************
*
* Authors: Pablo Inigo Blasco, Brett Aldrich
*
******************************************************************************************************************/
#pragma once

#include <nav2z_client/components/waypoints_navigator/cp_waypoints_event_dispatcher.hpp>
#include <nav2z_client/nav2z_client.hpp>
#include <smacc2/smacc.hpp>

#include <geometry_msgs/msg/pose.hpp>

namespace cl_nav2z
{
struct Pose2D
{
Pose2D(double x, double y, double yaw)
{
this->x_ = x;
this->y_ = y;
this->yaw_ = yaw;
}

double x_;
double y_;
double yaw_;
};

// This component contains a list of waypoints. These waypoints can
// be iterated in the different states using CbNextWaiPoint
// waypoint index is only incremented if the current waypoint is successfully reached
class CpWaypointNavigatorBase : public smacc2::ISmaccComponent
{
public:
WaypointEventDispatcher waypointsEventDispatcher;

CpWaypointNavigatorBase();

virtual ~CpWaypointNavigatorBase();

void onInitialize() override;

// template <typename TOrthogonal, typename TSourceObject>
// void onOrthogonalAllocation()
// {
// waypointsEventDispatcher.initialize<TSourceObject, TOrthogonal>(client_);
// }

void loadWayPointsFromFile(std::string filepath);

void loadWayPointsFromFile2(std::string filepath);

void setWaypoints(const std::vector<geometry_msgs::msg::Pose> & waypoints);

void setWaypoints(const std::vector<Pose2D> & waypoints);

const std::vector<geometry_msgs::msg::Pose> & getWaypoints() const;
const std::vector<std::string> & getWaypointNames() const;
std::optional<geometry_msgs::msg::Pose> getNamedPose(std::string name) const;
geometry_msgs::msg::Pose getPose(int index) const;
geometry_msgs::msg::Pose getCurrentPose() const;

long getCurrentWaypointIndex() const;
std::optional<std::string> getCurrentWaypointName() const;

long currentWaypoint_;

void rewind(int count);

void forward(int count);
void seekName(std::string name);

void loadWaypointsFromYamlParameter(
std::string parameter_name, std::string yaml_file_package_name);

void notifyGoalReached();

protected:
void insertWaypoint(int index, geometry_msgs::msg::Pose & newpose);

void removeWaypoint(int index);

std::vector<geometry_msgs::msg::Pose> waypoints_;

std::vector<std::string> waypointsNames_;
};
} // namespace cl_nav2z
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<depend>tf2_geometry_msgs</depend>
<depend>bond</depend>
<depend>slam_toolbox</depend>
<depend>ament_index_cpp</depend>

<export>
<build_type>ament_cmake</build_type>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ void CbAbsoluteRotate::onEntry()
auto pathname = this->getCurrentState()->getName() + " - " + getName();
odomTracker_->pushPath(pathname);
odomTracker_->setStartPoint(p->toPoseStampedMsg());
odomTracker_->setCurrentMotionGoal(goal.pose);
odomTracker_->setWorkingMode(odom_tracker::WorkingMode::RECORD_PATH);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ bool CbNav2ZClientBehaviorBase::isOwnActionResponse(const ClNav2Z::WrappedResult

void CbNav2ZClientBehaviorBase::onNavigationResult(const ClNav2Z::WrappedResult & r)
{
RCLCPP_DEBUG(
getLogger(), "[%s] Received result event from action server, result code", getName().c_str());

if (r.code == rclcpp_action::ResultCode::SUCCEEDED)
{
this->onNavigationActionSuccess(r);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,13 @@ void CbNavigateForward::onEntry()
auto p = nav2zClient_->getComponent<Pose>();
auto referenceFrame = p->getReferenceFrame();
auto currentPoseMsg = p->toPoseMsg();
tf2::Transform currentPose;
tf2::fromMsg(currentPoseMsg, currentPose);

RCLCPP_INFO_STREAM(
getLogger(), "[" << getName() << "]"
<< "current pose: " << currentPoseMsg);

// force global orientation if it is requested
if (options.forwardSpeed)
if (options.forceInitialOrientation)
{
currentPoseMsg.orientation = *(options.forceInitialOrientation);
RCLCPP_WARN_STREAM(
Expand All @@ -85,6 +83,9 @@ void CbNavigateForward::onEntry()
<< "Forcing initial straight motion orientation: " << currentPoseMsg.orientation);
}

tf2::Transform currentPose;
tf2::fromMsg(currentPoseMsg, currentPose);

tf2::Transform targetPose;
if (goalPose_)
{
Expand Down
Loading
Loading