Get halsim_gazebo building again (#1201)

This commit is contained in:
Jeremy White
2018-07-20 18:24:48 -05:00
committed by Peter Johnson
parent fe5d7dd6ba
commit 74efe5aafe
17 changed files with 9 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include "HALSimGazebo.h"
#include "simulation/gz_msgs/msgs.h"
class GazeboAnalogIn {
public:
GazeboAnalogIn(int index, HALSimGazebo* halsim);
void SetInitialized(bool value) { m_initialized = value; }
bool IsInitialized(void) { return m_initialized; }
void Listen(void);
private:
HALSimGazebo* m_halsim;
int m_index;
bool m_initialized;
void Callback(const gazebo::msgs::ConstFloat64Ptr& msg);
gazebo::transport::SubscriberPtr m_sub;
};

View File

@@ -0,0 +1,26 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include "HALSimGazebo.h"
#include "simulation/gz_msgs/msgs.h"
class GazeboDIO {
public:
GazeboDIO(int index, HALSimGazebo* halsim);
void SetInitialized(bool value) { m_initialized = value; }
bool IsInitialized(void) { return m_initialized; }
void Listen(void);
private:
HALSimGazebo* m_halsim;
int m_index;
bool m_initialized;
void Callback(const gazebo::msgs::ConstBoolPtr& msg);
gazebo::transport::SubscriberPtr m_sub;
};

View File

@@ -0,0 +1,32 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include "HALSimGazebo.h"
#include "simulation/gz_msgs/msgs.h"
class GazeboEncoder {
public:
GazeboEncoder(int index, HALSimGazebo* halsim);
void SetInitialized(bool value) { m_initialized = value; }
bool IsInitialized(void) { return m_initialized; }
void SetReverse(bool value) { m_reverse = value; }
void Control(const char* command);
void Listen(void);
private:
HALSimGazebo* m_halsim;
int m_index;
bool m_initialized;
bool m_reverse;
void Callback(const gazebo::msgs::ConstFloat64Ptr& msg);
gazebo::transport::PublisherPtr m_pub;
gazebo::transport::SubscriberPtr m_sub;
};

View File

@@ -0,0 +1,43 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include <string>
#include <gazebo/gazebo_client.hh>
#include <gazebo/transport/transport.hh>
class GazeboNode {
public:
bool Connect();
template <typename M>
gazebo::transport::PublisherPtr Advertise(const std::string& topic,
int queueLimit = 10,
bool latch = false) {
return main->Advertise<M>(topic, queueLimit, latch);
}
template <typename M, typename T>
gazebo::transport::SubscriberPtr Subscribe(
const std::string& topic,
void (T::*fp)(const boost::shared_ptr<M const>&), T* obj,
bool latching = false) {
return main->Subscribe(topic, fp, obj, latching);
}
template <typename M>
gazebo::transport::SubscriberPtr Subscribe(
const std::string& topic, void (*fp)(const boost::shared_ptr<M const>&),
bool latching = false) {
return main->Subscribe(topic, fp, latching);
}
private:
gazebo::transport::NodePtr main;
};

View File

@@ -0,0 +1,29 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include "HALSimGazebo.h"
class GazeboPCM {
public:
GazeboPCM(int index, int channel, HALSimGazebo* halsim);
void Publish(bool value);
void SetInitialized(bool value) { m_initialized = value; }
bool IsInitialized(void) { return m_initialized; }
private:
HALSimGazebo* m_halsim;
int m_index;
int m_channel;
bool m_initialized;
gazebo::transport::PublisherPtr m_pub;
};
void GazeboPCM_SetPressureSwitch(int index, bool value);

View File

@@ -0,0 +1,24 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include "HALSimGazebo.h"
class GazeboPWM {
public:
GazeboPWM(int port, HALSimGazebo* halsim);
void SetInitialized(bool value) { m_initialized = value; }
bool IsInitialized(void) { return m_initialized; }
void Publish(double value);
private:
HALSimGazebo* m_halsim;
gazebo::transport::PublisherPtr m_pub;
bool m_initialized;
int m_port;
};

View File

@@ -0,0 +1,32 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include <vector>
#include "GazeboNode.h"
class GazeboPWM;
class GazeboPCM;
class GazeboEncoder;
class GazeboAnalogIn;
class GazeboDIO;
class HALSimGazebo {
public:
static const int kPWMCount = 20;
static const int kPCMCount = 8;
static const int kEncoderCount = 8;
GazeboNode node;
GazeboPWM* pwms[kPWMCount];
GazeboPCM* pcms[kPCMCount];
GazeboEncoder* encoders[kEncoderCount];
std::vector<GazeboAnalogIn*> analog_inputs;
std::vector<GazeboDIO*> dios;
};